1. Technical Field
The present invention relates generally to random number generation technology and, more particularly, to a random number generator, which manages the seed of the random number generator so that the seed cannot be predicted, thus providing the confidentiality and integrity of random numbers required for authentication and encryption.
2. Description of the Related Art
Microprocessor-based random number generators are mainly classified into two schemes, that is, a scheme which generates random numbers required for application programs through the preprocessing and correction processing of noise collected by external hardware noise sources, and a scheme which allows a microprocessor to directly generate random numbers using an initial seed value for random numbers and a random number generation algorithm.
An application program provides the confidentiality and integrity of an application using generated random numbers, and may provide services, such as authentication and encryption services.
FIGS. 1 and 2 are block diagrams showing conventional random number generators.
Referring to FIG. 1, a random number generator 110 includes a hardware noise source 101, a correction algorithm unit 102, an external power source 103, and a microprocessor 104.
The hardware noise source 101 generates noise used to generate random numbers using a ring oscillator, a thermal noise diode, or the like.
The correction algorithm unit 102 corrects collected hardware noise using software and then improves random number characteristics.
The external power source 103 supplies power to the random number generator 110.
The microprocessor 104 generates a random number sequence using the collected hardware noise, and provides the generated random number sequence when an application program unit 105 requests the random number sequence.
The application program unit 105 requests a random number (or a random number sequence) required for encryption or authentication.
Referring to FIG. 2, a random number generator 210 includes an external power source 206, a microprocessor 207, an initial value provision unit 209, and a random number generation algorithm unit 201.
The external power source 206 supplies power to the random number generator 210.
The microprocessor 207 generates a random number sequence using an initial value and a random number generation algorithm, and provides the generated random number sequence when an application program unit 208 requests the random number sequence.
The application program unit 208 requests a random number (or a random number sequence) required for encryption or authentication.
The initial value provision unit 209 provides an initial seed value used for the random number generation algorithm.
The random number generation algorithm unit 201 generates a random number using a message digest algorithm, such as a Secure Hashing Algorithm (SHA).
The random number generators shown in FIGS. 1 and 2 are configured to update the seed using a scheme for generating new unpredictable seeds from an internal state configured using a plurality of various entropy sources, together with the seed at a previous time point. Consequently, unless sufficient entropy is guaranteed to external noise sources in the random number generation algorithm based on seeds, a random number at a subsequent time point is predictable.
Furthermore, the conventional random number generators shown in FIGS. 1 and 2 are operated only when power is supplied to the microprocessor, and are not operated when power is not supplied, thus causing a disadvantage in that the seed of the random number generator is not updated.
Therefore, a new random number generation scheme for always generating unpredictable random numbers using a random number generation algorithm in which external hardware noise sources and seeds are used, and a new seed management scheme therefor am urgently required.
Prior art related to the above technology includes U.S. Pat. No. 8,001,054 presenting a system and method for generating an unpredictable random number using a seeded algorithm (entitled “System and method for generating an unpredictable number using a seeded algorithm”).